package qdu.mytest.ch3_lists.exp3_steps;

import java.util.List;
import java.util.Map;

import qdu.mytest.ch3_lists.R;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class Mybaseadp3 extends BaseAdapter {
	Context mycontext;
	List<Map<String,Object>> mylist;
	
    public Mybaseadp3(Context mycontext,  List<Map<String,Object>> mylist){
    	this.mycontext = mycontext;
    	this.mylist = mylist;
    }
	@Override
	public int getCount() {
		return mylist.size();
	}
	@Override
	public Object getItem(int position) {
		return null;
	}

	@Override
	public long getItemId(int position) {
		return 0;
	}
	static class ViewHolder{//view引用的保存器
		ImageView iv;
		TextView tv_name,tv_desc;
	}

	/**
	 *在step2中，仅判断了converView是否为空，但是每次调用getView仍然需要通过 findViewById函数
	 * 为每一个相关的UI元素获取引用，该函数涉及资源访问，效率有限。为了提高效率，考虑减少findViewById函数的调用
	 * 次数。即创建一个ViewHolder保存器，将UI元素的引用保存到ViewHolder中，并通过setTag存入convertView。
	 * 之后在复用convertView时，就不需要再次调用findViewById函数，直接从ViewHolder中获取。
	 */
	@Override
    public View getView(int position, View convertView, ViewGroup parent) {
    	ViewHolder vh;
    	if(convertView == null){
			convertView = LayoutInflater.from(mycontext).inflate(R.layout.ly_mylv,null);
			vh = new ViewHolder();//创建保存器对象
			//将通过资源访问find出来的view引用存入保存器对象
			vh.iv = (ImageView) convertView.findViewById(R.id.icon);
			vh.tv_name = (TextView) convertView.findViewById(R.id.name);
			vh.tv_desc = (TextView) convertView.findViewById(R.id.dexc);
			convertView.setTag(vh);//将保存器对象存入convertView对象
    	}else {
			vh = (ViewHolder) convertView.getTag();
		}
    	
		
		vh.iv.setImageResource((Integer)mylist.get(position).get("icon"));
		vh.tv_name.setText((String)mylist.get(position).get("name"));
		vh.tv_desc.setText((String)mylist.get(position).get("desc"));
		
		return convertView;
	}
}
